#include "../../muduo_source/server.hpp"

void OnMessage(const PtrConnection& conn,Buffer* buff)
{
    //打印收到的消息
    DEBUG_LOG("我收到了消息：%s",buff->GetReadPos());
    
    buff->MoveReadOffset(buff->GetReadableSpace());//读指针此时移动到与写指针相同位置
    std::string str = "服务器收到数据啦，hello";
    //将回复写入到发送缓冲区
    conn->Send(str.c_str(),str.size()); 
}

void OnConnected(const PtrConnection& conn)
{
    DEBUG_LOG("NEW CONNECTION: %p",conn.get());
}

void OnClosed(const PtrConnection& conn)
{
    DEBUG_LOG("CLOSE CONNECTION : %p",conn.get()); //不一定是客户端主动退出，而是客户端非活跃
}

int main()
{
    TcpServer server(8085);
    server.SetThreadCount(2);
    server.EnableInactiveRelease(10);
    
    //由于这几个函数都不是类的成员函数，都只是普通的函数，所以直接传即可。
    //而如果该函数是类的成员函数，就需要进行bind
    server.SetClosedCallback(OnClosed);
    server.SetConnectedCallback(OnConnected);
    server.SetMessageCallback(OnMessage);
    server.Start();
    return 0;
}